package com.controller.template;

import lombok.Getter;

/**
 * @author ruiwen
 */

@Getter
public enum ResultCode {
    /**
     * 成功处理
     */
    SUCCESS(200, "成功"),

    /**
     * 上传图片不得超过10M
     */
    PICTURE_SIZE_IS_BIG(3001, 1, "上传图片不得超过10M"),


    /**
     * 上传视频不得超过100M
     */
    VIDEO_SIZE_IS_BIG(3002, 1, "上传视频不得超过100M"),
    /**
     *
     */
    LABLE_NUM_CANT_NULL(3003,1,"商品标签为3-15"),
    /**
     * 系统处理失败，包含 system exception \ npe
     */
    UNKNOWN_EXCEPTION(500, "未知异常"),
    /**
     * 默认地址不能删除
     */
    DEFAULT_ADDRESS_IS_NOT_DELETE(502, "默认地址不能删除"),
    /**
     * 致命错误，包含: 资金风险异常
     */
    FATAL_ERROR(501, "系统异常"),
    /**
     * 账号/密码错误
     */
    LOGIN_FAIL(1002, "密码/账号不匹配"),
    /**
     * 参数不符合需求
     */
    PARAMETERS_ILLEGAL(1001, 1, "参数非法"),
    /**
     * 参数不为null
     */
    PARAMETERS_NOTNULL(1003, "参数不为null"),
    /**
     * 参数为空！
     */
    PARAMETERS_EMPTY(1004, 1, "参数为空"),

    /**
     * 查询结果为空
     */
    EMPTY_QUERY(1005, 1, "查询结果为空"),
    /**
     * 两次输入密码不一致
     */
    PASSWORD_NO_EQUAL(1006, 1, "两次输入密码不一致"),

    /**
     * 验证码不正确
     */
    CODE_INCORRECT(1008, 1, "验证码不正确"),


    /**
     * 删除失败
     */
    DELETE_FAIL(2009, 1, "删除失败"),

    /**
     * 角色删除失败
     */
    ROLE_DELETE_FAIL(2010,1,"角色删除失败 请清空用户角色后再删除"),

    /**
     * 不能修改超级管理员权限
     */
    CANT_UPDATE_SUPER(2011,1,"不能修改超级管理员权限"),

    /**
     * 超级管理员唯一
     */
    SUPER_ONLY_ONE(2012,1,"超级管理员唯一"),

    /**
     * 身份信息异常
     */
    IDENTITY_INFORMATION_ERROR(403,1, "身份信息/签名异常");

    /**
     * 错误码
     */
    private int code;

    /**
     * 错误码类型，: 9：系统错误码 1：业务错误码
     */
    private int type = 9;

    /**
     * 错误码描述
     */
    private String desc;

    ResultCode(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    ResultCode(int code, int type, String desc) {
        this.code = code;
        this.type = type;
        this.desc = desc;
    }

    /**
     * 判断是否成功状态
     *
     * @param result 结果码
     * @return true 成功，false 失败
     */
    public static boolean isBizFailed(ResultCode result) {
        return SUCCESS != result;
    }

}
